1. Field of the Invention
The present invention relates in general to a method and system for improved graphical computation and in particular to a method and system for utilizing graphical computation to process a data stream. Still more particularly, the present invention relates to a method and system of graphical computation to efficiently process a graphics data stream.
2. Description of the Related Art
Data processing systems such as personal computers and workstations are commonly utilized to run computer-aided design (CAD) applications, computer-aided manufacturing (CAM) applications, and computer-aided software engineering (CASE) tools. Engineers, scientists, technicians, and others employ these applications daily. These applications involve complex calculations, such as finite element analysis, to model stress in structures. Other applications include chemical or molecular modelling applications. CAD/CAM/CASE applications are normally graphics intensive in terms of the information relayed to the user. Other data processing system users may employ other graphics intensive applications such as desktop publishing applications.
Ideally, such systems should be able to process two graphics data streams in parallel and interleave the resulting drawing information without mutual interference. One of the data streams might consist of two-dimensional (2D) drawing primitives and window manipulation commands, while the other might be primarily three-dimensional (3D) drawing primitives and attributes. The 3D data stream processing should be extremely high performance, while the 2D processing should be very low latency. In addition, the time required to swap between these two data streams should be minimal. The system should be able to use current processor technology. Overall, the system should provide consistent high-performance, low-latency 2D processing in conjunction with providing a scalable range of 3D processing.
Systems which are currently on the market providing 2D and 3D data stream support process these data streams sequentially, i.e., by time-multiplexing them on a single processor or processor complex. They process one data stream for a period of time, then they process the second for a period of time, and then they return to the first. This approach is an unacceptable solution since intermixing a data stream which is computationally intensive with one that is highly interactive generally degrades both. The computationally intensive one (3D) does not get as much processor time as it might, and the interactive one (2D) must wait for the 3D data stream to be processed before getting an opportunity to display the interactive information that the user is waiting for. Currently available systems require large amounts of context information to be swapped in order to switch from processing 3D information to processing 2D information and back.
A system which provides for fast 3D graphics running alongside (or within) an interactive 2D windowed environment (e.g., X Windows) requires a system which can process these two data streams efficiently without mutual interference. However, the traditional approach of time-slicing between the two types of data streams can cause serious performance problems, as noted above.